package com.comdo.newup_loan;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.net.http.SslError;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.SslErrorHandler;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class BankWebViewActivity extends Activity implements OnClickListener {
	private WebView webView;
	private LinearLayout loadLayout;
	private String url;
	private TextView completeTextView;
	private ImageView backImageView;

	@Override
	protected void onCreate(Bundle savedInstanceState) {

		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_bank_webview);
		url = getIntent().getStringExtra("url");
		initView();
		initToolBar();
		webView.loadUrl(url);
	}

	private void initToolBar() {
		completeTextView = (TextView) findViewById(R.id.tv_complete);
		completeTextView.setOnClickListener(this);
		LinearLayout ll_back=(LinearLayout)findViewById(R.id.ll_back);
		ll_back.setOnClickListener(this);
	}

	@SuppressWarnings("deprecation")
	@SuppressLint("SetJavaScriptEnabled")
	private void initView() {
		loadLayout = (LinearLayout) findViewById(R.id.ll_loading);
		webView = (WebView) findViewById(R.id.webView);
		WebSettings s = webView.getSettings();
		if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
			s.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
		}
		s.setBuiltInZoomControls(true);
		s.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
		s.setUseWideViewPort(true);
		s.setAllowFileAccess(true);// 设置允许访问文件数据
		s.setJavaScriptEnabled(true);
		s.setLoadWithOverviewMode(true);
		s.setSavePassword(false);
		s.setSaveFormData(true);
		s.setGeolocationEnabled(true); // 启用地理定位
		// 启用地理定位
		String dir = this.getApplicationContext()
				.getDir("database", Context.MODE_PRIVATE).getPath();
		// 设置定位的数据库路径
		s.setGeolocationDatabasePath(dir);
		s.setJavaScriptCanOpenWindowsAutomatically(true);
		s.setDomStorageEnabled(true);
		webView.requestFocus();
		webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
		/*
		 * Android内嵌html5获取定位信息 1、声明联网权限和获取位置的权限，获取用户的授权：
		 * 2、在Android壳源码里面启用javascript支持，启用地理定位，启用定位数据库，启用插件支持，启用js自动打开窗口授权；
		 * 3、在WebChromeClient的子类中重写onGeolocationPermissionsShowPrompt方法
		 */

		webView.setWebChromeClient(new WebChromeClient() {// webview可以弹出弹出框
			public void onGeolocationPermissionsShowPrompt(
					// webview定位
					String origin,
					android.webkit.GeolocationPermissions.Callback callback) {
				super.onGeolocationPermissionsShowPrompt(origin, callback);
				callback.invoke(origin, true, false);
			};
		});
		webView.reload();

		webView.setWebViewClient(new WebViewClient() {
			// 覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为，使网页用WebView打开
			@Override
			public boolean shouldOverrideUrlLoading(WebView view, String url) {
				// 返回值是true的时候控制去WebView打开，为false调用系统浏览器或第三方浏览器
				// view.loadUrl(url);
				// return true;
				if (url.startsWith("http:") || url.startsWith("https:")) {
					return false;
				}

				// Otherwise allow the OS to handle things like tel, mailto,
				// etc.
				Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
				startActivity(intent);
				return true;
			}
			// 当load有ssl层的https页面时，如果这个网站的安全证书在Android无法得到认证，WebView就会变成一个空白页，而并不会像PC浏览器中那样跳出一个风险提示框
			@Override
			public void onReceivedSslError(WebView view,
					SslErrorHandler handler, SslError error) {
				// 忽略证书的错误继续Load页面内容
				handler.proceed();
				// handler.cancel(); // Android默认的<strong>处理</strong>方式
				// handleMessage(Message msg); // 进行其他<strong>处理</strong>
				// super.onReceivedSslError(view, handler, error);
			}
			@Override
			public void onPageStarted(WebView view, String url, Bitmap favicon) {

			}
			@Override
			public void onPageFinished(WebView view, String url) {
				Log.e("onPageFinished", "url" + url);
				webView.setVisibility(View.VISIBLE);
				loadLayout.setVisibility(View.GONE);
			}
		});
	}

	@Override
	public void onClick(View view) {
		switch (view.getId()) {
		case R.id.tv_complete:
			BankWebViewActivity.this.finish();
			break;
		case R.id.ll_back:
			BankWebViewActivity.this.finish();
			break;
		default:
			break;
		}
	}

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (keyCode == KeyEvent.KEYCODE_BACK) {
			BankWebViewActivity.this.finish();
		}
		return true;
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
		if (webView != null)
			webView.destroy();
	}
}
